//package com.jeecg.xiaozhi.websocket;
//
//
//
// 
//
//import java.io.IOException;
//import java.nio.ByteBuffer;
//import java.nio.CharBuffer;
//import java.util.Set;
//import java.util.concurrent.CopyOnWriteArraySet;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServletRequest;
//import org.apache.catalina.websocket.MessageInbound;
//import org.apache.catalina.websocket.StreamInbound;
//import org.apache.catalina.websocket.WebSocketServlet;
//import org.apache.catalina.websocket.WsOutbound; 
//
//@WebServlet(name = "chat", urlPatterns = "/chat")
//public class ChatWebSocket extends WebSocketServlet {
//
// 
//
//	private static final String GUEST_PREFIX = "Guest";
//
// 
//
//	private final Set<ChatMessageInbound> connections = new CopyOnWriteArraySet<ChatMessageInbound>();
//
//	
//
//	@Override
//
//	protected StreamInbound createWebSocketInbound(String subProtocol,
//
//			HttpServletRequest request) {
//
//		return new ChatMessageInbound(request.getParameter("userName"));
//
//	}
//
// 
//
//	private final class ChatMessageInbound extends MessageInbound {
//
// 
//
//		private final String nickname;
//
// 
//
//		private ChatMessageInbound(String name) {
//
//			this.nickname = name;
//
//		}
//
// 
//
//		@Override
//
//		protected void onOpen(WsOutbound outbound) {
//
//			connections.add(this);
//
//			
//
//			System.out.println(nickname + "has joined.");
//
//			broadcast(nickname + " has joined.");
//
//		}
//
// 
//
//		@Override
//
//		protected void onClose(int status) {
//
//			connections.remove(this);
//
//			System.out.println(nickname + "has leaved.");
//
//			broadcast(nickname + " has leaved.");
//
//		}
//
//		
//
//		@Override
//
//		protected void onBinaryMessage(ByteBuffer buffer) throws IOException {
//
//			
//
//		}
//
// 
//
//		@Override
//
//		protected void onTextMessage(CharBuffer buffer) throws IOException {
//
// 
//
//			System.out.println(nickname + " say:" + buffer.toString());
//
//			broadcast(nickname + " say:" + buffer.toString());
//
//		}
//
// 
//
//		private void broadcast(String message) {
//
//			for (ChatMessageInbound connection : connections) {
//
//				try {
//
//					CharBuffer buffer = CharBuffer.wrap(message);
//
//					connection.getWsOutbound().writeTextMessage(buffer);
//
//				} catch (IOException ignore) {
//
//				}
//
//			}
//
//		}
//
//	}
//
//}
//
